import request from '@/util/axios';
import type { Conmmon, GetList, CreatType, DetailsType, GuanxiType, BanbenType } from './page_type';
// 统一管理接口
enum API {
  Title = '/api/asset/package/dashboard', //主页标题
  List = '/api/asset/package/list', //主页table 数据
  Owner = '/api/identity/org/list', //资产所属组织
  Catalog = '/api/asset/resource/list', //资产目录
  Create = '/api/asset/package/create', //资产打包
  Details = '/api/asset/package/detail', //详情
  Edit = '/api/asset/package/edit', //编辑
  Update = '/api/asset/package/update', //更新
  Guanxi = 'api/asset/package/relations', //查看关系
  Banben = '/api/asset/package/versions' //查看版本
}
/**
 * @method 获取主页标题数据
 */
export async function getTitle() {
  try {
    return await request.get(API.Title, {
      params: {}
    });
  } catch (error) {
    console.error('获取主页标题数据：', error);
    throw new Error('获取主页标题数据');
  }
}
/**
 * @method 获取资产打包列表
 */
export async function getList(data: GetList) {
  try {
    return await request.get(API.List, {
      params: { ...data }
    });
  } catch (error) {
    console.error('获取资产打包列表：', error);
    throw new Error('获取资产打包列表错误');
  }
}
/**
 * @method 所属组织
 */
export async function getOwner(data: Conmmon) {
  try {
    return await request.get(API.Owner, {
      params: { ...data }
    });
  } catch (error) {
    console.error('获取项目列表时发生错误：', error);
    throw new Error('获取项目列表失败，请稍后重试。');
  }
}
/**
 * @method 获取资源目录
 */
export async function getProjectList(data: Conmmon) {
  try {
    return await request.get(API.Catalog, {
      params: { ...data }
    });
  } catch (error) {
    console.error('获取项目列表时发生错误：', error);
    throw new Error('获取项目列表失败，请稍后重试。');
  }
}

/**
 * @method 资产打包新增
 */
export async function Create(data: CreatType) {
  try {
    return await request.post(API.Create, { ...data });
  } catch (error) {
    console.error('新增资产打包时发生错误：', error);
    throw new Error('新增资产打包失败，请稍后重试。');
  }
}

/**
 * @method 资产详情
 */
export async function getDetails(id: number) {
  try {
    return await request.get(API.Details, {
      params: {
        id
      }
    });
  } catch (error) {
    console.error('新增资产打包时发生错误：', error);
    throw new Error('新增资产打包失败，请稍后重试。');
  }
}
/**
 * @method 资产打包编辑
 */
export async function Edit(data: CreatType) {
  try {
    return await request.post(API.Edit, { ...data });
  } catch (error) {
    console.error('编辑资产打包时发生错误：', error);
    throw new Error('编辑资产打包失败，请稍后重试。');
  }
}

/**
 * @method 资产打包更新
 */
export async function Update(data: CreatType) {
  try {
    return await request.post(API.Update, { ...data });
  } catch (error) {
    console.error('更新资产打包时发生错误：', error);
    throw new Error('更新资产打包失败，请稍后重试。');
  }
}

/**
 * @method 查看关联
 */
export async function getGuanxi(package_id: number) {
  try {
    return await request.get(API.Guanxi, {
      params: { package_id }
    });
  } catch (error) {
    console.error('查看关联时发生错误：', error);
    throw new Error('查看关联失败，请稍后重试。');
  }
}
/**
 * @method 资产包版本列表
 */
export async function getBanben(data: BanbenType) {
  try {
    return await request.get(API.Banben, {
      params: { ...data }
    });
  } catch (error) {
    console.error('查看资产打包历史版本时发生错误：', error);
    throw new Error('查看资产打包历史版本失败，请稍后重试。');
  }
}
